// ES6 允许按照一定模式，从数组和对象中提取值，
// 对变量进行赋值，这被称为解构，解构的本质属于“模式匹配”，
// 只要等号两边的模式相同，左边的变量就会被赋予对应的值
// 。如果解构不成功，变量的值就等于undefined;
// 1.数组解构 --完全解构
// let [a,b,c,d,e]= [1,2,3,4,5];
// console.log(a,b,c,d,e);
// 2.数组解构 --完全解构
// let [a,b,c,d]=[1,2,3,[4,5]];
// console.log(a,b,c,d);
// 3.不完全解构
// let [a,b,c,[d],e]=[1,2,3,[4,5,6],7];
// console.log(a,b,c,d,e);
// 4.集合解构,扩展运算符
// let [a,...b]=[1,2,3,4,5];
// console.log(a,b);
// 5.默认值解构(当变量的值严格为undefined,默认值生效);
// let [a=1,b=2,c=3]=[4,5,6];
// let [a=1,b=2,c=3]=[,,];
// console.log(a,b,c);
// 6.默认值解构 默认值也可以是函数
function test(){
  console.log('我是默认值');
  return 1
};
// let [a=test()]=[1];
let [a=test()]=[];
console.log(a);

let arr=[1,2,3,4];
let [...b]=arr;
console.log(b);
console.log(b===arr);
